/*
 * Copyright 2014 Netflix, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.netflix.spinnaker.gate.services.internal

import retrofit.http.*

interface EchoService {

  @Headers("Accept: application/json")
  @POST("/webhooks/{type}/{source}")
  Map webhooks(@Path('type') String type,
               @Path('source') String source,
               @Body Map event)

  @Headers("Accept: application/json")
  @POST("/webhooks/{type}/{source}")
  Map webhooks(@Path('type') String type,
               @Path('source') String source,
               @Body Map event,
               @Header("X-Hub-Signature") String gitHubSignature,
               @Header("X-Event-Key") String bitBucketEventType)

  @GET("/validateCronExpression")
  Map validateCronExpression(@Query("cronExpression") String cronExpression)

  @GET("/pubsub/subscriptions")
  List<Map<String, String>> getPubsubSubscriptions()

  @POST('/')
  String postEvent(@Body Map event)
  
  @GET('/quietPeriod')
  Map getQuietPeriodState()
}
